Application-Specific Conflict Resolution

Seminar

In decentralized systems, conflicts are commonplace. They can arise whenever one peer performs an operation that invalidates some concurrent operation by another peer. There exist a multitude of different conflict resolution strategies: For example, we can simply keep the conflict and let the users fix it (git), we can prevent the conflict from happening by enforcing a consensus between the peers, or we can define an application-specific strategy that resolves conflicts (e.g. adds win over removes).

Most distributed applications pick one conflict resolution strategy for the whole application, which is usually determined by the application's consistency level. However, such a global strategy is often too permissive (leading to concurrency bugs) or too restrictive (slowing down the application and preventing offline availability). Ideally, we would pick just the right strategy for each part of the application being permissive where we can and being strict where needed.

As part of this topic, you will analyse different conflict-resolution strategies and evaluate them in the context of local-first software.